﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SIMCRepositorio
{
    public interface IRepositoryFactory
    {
        IRepositorioAtributo RepositoryAtributo { get; }
        IRepositorioValor RepositoryValores { get; }
        IRepositorioCalificador RepositoryCalificador { get; }
        IRepositorioAtributoPersona RepositoryClasificacionPersonas { get; }
        IRepositorioCuenta RepositoryCuenta  { get; }
        IRepositorioDireccion RepositoryDireccion   { get; }
        IRepositorioDocumento RepositoryDocumento { get; }
        IRepositorioPersona RepositoryPersona { get; }
        IRepositorioPortafolio RepositoryPortafolio { get; }
        IRepositorioSeguridad RepositorySeguridad { get; }
        IRepositorioConfiguracion RepositoryConfiguracion { get; }
        IRepositorioUsuario RepositoryUsuario { get; }
        IRepositorioPortafolioUsuario RepositoryPortafolioUsuario { get; }
        IRepositorioFiltro RepositoryFiltro { get; }
    }

    public class RepositoryFactory: IRepositoryFactory
    {
        public  IRepositorioAtributo RepositoryAtributo
        {
            get { return new RepositorioAtributo(); }
        }
        public  IRepositorioAtributoPersona RepositoryClasificacionPersonas
        {
            get { return new RepositorioAtributoPersona(); }
        }
        public  IRepositorioCalificador RepositoryClasificadoresDeAtributos
        {
            get { return new RepositorioCalificador(); }
        }
        public  IRepositorioCuenta RepositoryCuenta
        {
            get { return new RepositorioCuenta(); }
        }
        public  IRepositorioDireccion RepositoryDireccion        
        {
            get { return new RepositorioDireccion(); }
        }
        public  IRepositorioDocumento RepositoryDocumento
        {
            get { return new RepositorioDocumento(); }
        }
        public  IRepositorioPersona RepositoryPersona
        {
            get { return new RepositorioPersona(); }
        }
        public  IRepositorioValor RepositoryValores
        {
            get { return new RepositorioValor(); }
        }
        public  IRepositorioPortafolio RepositoryPortafolio
        {
            get { return new RepositorioPortafolio(); }
        }
        public  IRepositorioSeguridad RepositorySeguridad
        {
            get { return new RepositorioSeguridad(); }
        }
        public  IRepositorioConfiguracion RepositoryConfiguracion
        {
            get { return new RepositorioConfiguracion(); }
        }
        public IRepositorioCalificador RepositoryCalificador
        {
            get { return new RepositorioCalificador(); }
        }
        public IRepositorioUsuario RepositoryUsuario
        {
            get { return new RepositorioUsuario(); }
        }

        public IRepositorioPortafolioUsuario RepositoryPortafolioUsuario
        {
            get { return new RepositorioPortafolioUsuario(); }
        }

        public IRepositorioFiltro RepositoryFiltro
        {
            get { return new RepositorioFiltro(); }
        }
    }
}
